﻿Imports System.Threading
Imports System.Collections.ObjectModel

<DebuggerDisplay("Terminal({DebugName})")> _
Public Class Terminal
    Inherits ProductionSymbol

    Public NotOverridable Overrides ReadOnly Property IsNullable() As Boolean
        Get
            Return False
        End Get
    End Property

    Friend Sub New(ByVal index As Integer)
        MyBase.New(index)

        m_first = New Terminal() {Me}
        m_appearList = New List(Of Integer)
    End Sub

    Private ReadOnly m_first As Terminal()

    Public NotOverridable Overrides ReadOnly Property First() As IEnumerable(Of Terminal)
        Get
            Return m_first
        End Get
    End Property

    Private m_appearList As List(Of Integer)

    Public ReadOnly Property AppearedStateIndexes() As IList(Of Integer)
        Get
            Return m_appearList
        End Get
    End Property
End Class